package org.jsola.hr.service;

import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.IProductBannerDAO;
import org.jsola.hr.dto.ProductBannerAddDTO;
import org.jsola.hr.dto.ProductBannerUpdateDTO;
import org.jsola.hr.entity.ProductBannerDO;
import org.jsola.hr.query.ProductBannerQuery;
import org.jsola.hr.vo.ProductBannerListVO;
import org.jsola.hr.vo.ProductBannerVO;
import org.jsola.user.core.TokenUser;

import java.util.List;


/**
 * 产品banner
 *
 * @author zhr
 */
public interface IProductBannerService extends IService<IProductBannerDAO, ProductBannerDO> {

    /**
     * 新增产品banner
     *
     * @param productBannerAddDTO 新增产品bannerDTO
     * @param tokenUser           当前用户
     * @return 产品banner详情信息
     */
    ProductBannerVO save(ProductBannerAddDTO productBannerAddDTO, TokenUser tokenUser);

    /**
     * 修改产品banner
     *
     * @param productBannerUpdateDTO 修改产品bannerDTO
     * @param tokenUser              当前用户
     * @return 更新数量
     */
    int update(ProductBannerUpdateDTO productBannerUpdateDTO, TokenUser tokenUser);


    /**
     * 批量删除产品banner，物理删除，更新is_valid字段，从回收站删除
     *
     * @param tokenUser        当前用户
     * @param productBannerIds 产品bannerid
     * @return 删除数量
     */
    int deleteByIds(TokenUser tokenUser, Long... productBannerIds);

    /**
     * 根据产品bannerid查找
     *
     * @param productBannerId 产品bannerid
     * @param siteId          所属站点id
     * @return 产品banner详情信息
     */
    ProductBannerVO selectById(Long productBannerId, String siteId);

    /**
     * 查询产品banner
     *
     * @param productBannerQuery 查询条件
     * @param siteId             所属站点id
     * @return 产品banner列表信息
     */
    List<ProductBannerListVO> select(ProductBannerQuery productBannerQuery, String siteId);

    /**
     * 查询产品banner记录数
     *
     * @param productBannerQuery 查询条件
     * @param siteId             所属站点id
     * @return 产品banner记录数
     */
    int selectCount(ProductBannerQuery productBannerQuery, String siteId);

    /**
     * 分页查询产品banner
     *
     * @param productBannerQuery 查询条件
     * @param siteId             所属站点id
     * @return 产品banner列表信息
     */
    Page<ProductBannerListVO> selectPage(ProductBannerQuery productBannerQuery, String siteId);


    /**
     * 根据产品bannerid查找
     *
     * @param productBannerId 产品bannerid
     * @param siteId          所属站点id
     * @return 产品banner
     */
    ProductBannerDO selectDOById(Long productBannerId, String siteId);

    /**
     * 查询产品banner
     *
     * @param productBannerQuery 查询条件
     * @param siteId             所属站点id
     * @return 产品banner列表
     */
    List<ProductBannerDO> selectDO(ProductBannerQuery productBannerQuery, String siteId);

    /**
     * 查询指定产品banner
     *
     * @param productIds 产品ids
     * @param siteId     所属站点id
     * @return 产品banner列表
     */
    List<ProductBannerDO> selectDoByProductIds(List<String> productIds, String siteId);

    /**
     * 查询租户下产品banner
     *
     * @param siteId 所属站点id
     * @return 产品banner列表
     */
    List<ProductBannerDO> selectBySite(String siteId);
}


